RDS Proxyに接続可能なDBユーザーを追加してみた
こんにちは。AWS事業本部トクヤマシュンです。
Amazon RDS Proxyって本当便利ですよね。
Lambdaを使ったサーバーレスアプリケーション等のモダンアプリを始め、多くのユースケースで検討する機会があるのではないかと思います。
そんなAmazon RDS Proxyに接続可能なDBユーザを追加する機会がありましたので、紹介したいと思います。
本内容はユーザーガイドのRDS Proxyの管理→新しいデータベースユーザーの追加を参考に行っています。
環境
今回は、Private Subnetに構築したEC2からRDS Proxyを経由してRDSにアクセスします。
RDSにはAurora MySQL Version 3.01.0
を使いました。
手順
Amazon RDS Proxyに接続可能なDBユーザー追加は下記の手順で行います。
- DBへのユーザー追加
- Secrets Managerへのデータベース認証情報載設定
- RDS Proxyとシークレットの関連付け
- IAM Roleの変更
それでは、順に手順を実施します。
DBへのユーザー追加
今回はAurora MySQLを使っていますので、ログイン後に下のSQL文を実行し、proxy-test-user
を作成します。
CREATE USER proxy-test-user IDENTIFIED BY '任意のパスワード'
実際の運用では、ユーザーには適宜必要な権限を付与してください。
Secrets Managerへのデータベース認証情報設定
AWS Secrets Managerのマネジメントコンソールから、先ほど登録したproxy-test-user
に対応するシークレットを作成します。
シークレットのタイプは「Amazon RDSデータベースの認証情報」を選択し、ユーザー名、パスワード、DBインスタンスは対応するものを設定し、作成します。
RDS Proxyとシークレットの関連付け
Amazon RDSのマネジメントコンソールからAmazon RDS Proxyに作成したシークレットを関連付けます。 対象のAmazon RDS Proxyを選択し、[アクション]、[変更] の順に選択します。
作成したシークレットを追加し、プロキシを変更ボタンを押します。
IAM Roleの変更
Amazon RDS Proxyで利用しているIAM Roleに対して、secretsへの権限許可を追加します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "rdsProxyGetSecretsPolicy", "Effect": "Allow", "Action": [ "secretsmanager:ListSecretVersionIds", "secretsmanager:GetSecretValue", "secretsmanager:GetResourcePolicy", "secretsmanager:DescribeSecret" ], "Resource": [ "arn:aws:secretsmanager:ap-northeast-1:xxxxxxxxxxxx:secret:既存シークレットのARN", "arn:aws:secretsmanager:ap-northeast-1:xxxxxxxxxxxx:secret:追加シークレットのARN" ] }, { "Sid": "rdsProxyDecryptSecretsPolicy", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "*" } ] }
接続確認
作成したユーザーproxy-test-user
を使って、RDS Proxyのエンドポイントに接続確認をします。
sh-4.2$ mysql -h 'RDS Proxyのエンドポイント' -u proxy-test-user -p Enter password:'パスワード入力' Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is xxxxxxxxxx Server version: 8.0.23 Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>
無事、RDS Proxy経由でDBインスタンスにログインできました。
最後に
Amazon RDS Proxyに接続可能なDBユーザーを追加する手順を紹介しました。
RDS Proxy導入の敷居を少しでも低くできたならば幸いです。
それでは。